
package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.Embalaje;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 */



public class EmbalajeDAO extends GenericSAPDAO{
      
    
    private List<Embalaje> misEmbalajes;

    //Construtores
    public EmbalajeDAO() {
        this.misEmbalajes = new ArrayList();
    }
    
    public EmbalajeDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("I_EMBALAJE");
        super.setMyTable(aFunction);
        this.misEmbalajes = new ArrayList();
    }

    //Getters & Setters
    public List<Embalaje> getMisEmbalajes() {
        return misEmbalajes;
    }

    //Metodos privados
    /**
     * Agrega un "embalaje" a la coleccion "misEmbalajes".
     * @param elEmbalaje
     */
    private void addUnEmbalaje(Embalaje elEmbalaje) {
        this.misEmbalajes.add(elEmbalaje);
    }
    
    
    /**
     * Columnas de las tablas.
     *  ZESPECIE	ZZESPECIE		CHAR	4	Especie de frutas
     *  ZENVASE      ZZENVASE		CHAR	6	Envase de frutas.
     *  ZEMBALAJE	ZZEMBALAJE      	CHAR	8	Condición de embalaje de la fruta
     *  ZTEXTO       ZDENOMINAC              CHAR	30	Denominación
     */
    
    //Metodos publicos
    /**
     * Recorre "super.getMyTable()" de la RFC y por cada registro crea un "embalaje" y lo agrega a "misEmbalajes".
     */
    public void findAll() throws SapGeneralException {
        Embalaje embalaje;
        try{
                for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                embalaje=new Embalaje(super.getMyTable().getString("ZESPECIE"),super.getMyTable().getString("ZENVASE"),super.getMyTable().getString("ZEMBALAJE"),super.getMyTable().getString("ZTEXTO"));
                addUnEmbalaje(embalaje);
            }
            
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
        }

    }

    /**
     * Solo para las pruebas.
     * Imprime todos los registros de "super.getMyTable()".
     */
    @Override
    public void printAll() {
        System.out.println("ZESPECIE"+'\t'+"ZENVASE"+'\t'+"ZEMBALAJE"+'\t'+"ZTEXTO");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("ZESPECIE") +
            '\t' + super.getMyTable().getString("ZENVASE") + 
            '\t' + super.getMyTable().getString("ZEMBALAJE") +            
            '\t' + super.getMyTable().getString("ZTEXTO")
            );                
        }  
    }

}
